home *** CD-ROM | disk | FTP | other *** search
- /* requires json.js */
-
-
- const BAG_TAGSTOOLBAR = "Tags Toolbar"; // only used for the conversion
-
- const FAVTAGS_ORDER_CHRONO = "chrono";
- const FAVTAGS_ORDER_CHRONO_REVERSE = "chrono_reverse";
- const FAVTAGS_ORDER_ALPHANUM = "alphanum";
- const FAVTAGS_ORDER_ALPHANUM_REVERSE = "alphanum_reverse";
- const FAVTAGS_ORDER_USER = "user";
-
- const FAVTAGS_ORDER = [ { key: FAVTAGS_ORDER_CHRONO_REVERSE,
- label: "extensions.ybookmarks.toolbar.order.chrono.reverse" },
- { key: FAVTAGS_ORDER_CHRONO,
- label: "extensions.ybookmarks.toolbar.order.chrono" },
- { key: FAVTAGS_ORDER_ALPHANUM,
- label: "extensions.ybookmarks.toolbar.order.alphanum" },
- { key: FAVTAGS_ORDER_ALPHANUM_REVERSE,
- label: "extensions.ybookmarks.toolbar.order.alphanum.reverse" }/*,
- { key: FAVTAGS_ORDER_USER,
- label: "extensions.ybookmarks.toolbar.order.user"}*/
- ];
-
- const FAVTAGS_ORDER_DEFAULT = FAVTAGS_ORDER_CHRONO_REVERSE;
-
- var ybBags = {
-
- storeService: null,
-
- onLoad: function() {
- try {
- this.storeService = Components.classes["@mozilla.org/ybookmarks-store-service;1"].
- getService(Components.interfaces.nsIYBookmarksStoreService);
-
- this.upgradeFavoriteTags();
-
- } catch (e) {
- yDebug.print(e, YB_LOG_MESSAGE);
- }
- },
-
- /*
- * Upgrades the Favorite Tags from using preferences to using the datastore (1.3.51)
- * It copied over the favorite tags and set extensions.ybookmarks@yahoo.bags.converted to true
- *
- * 2007-01-22 cmyang: As of the 1.4 branch, we're just going to convert and clean up the preferences
- * rather than leave the info in the preferences
- */
- upgradeFavoriteTags: function () {
- var key_yb_bags = "extensions.ybookmarks@yahoo.bags";
- var key_yb_bags_converted = "extensions.ybookmarks@yahoo.bags.converted";
- try {
- var prefs = Components.classes["@mozilla.org/preferences-service;1"].
- getService(Components.interfaces.nsIPrefBranch);
-
- if (prefs.prefHasUserValue(key_yb_bags)) {
-
- var converted;
- var oldVer = prefs.getCharPref("extensions.ybookmarks@yahoo.version.number").split(".");
-
- if (oldVer.length == 3 && oldVer[1] == 3 && oldVer[2] <= 51 && prefs.prefHasUserValue(key_yb_bags_converted)) {
- converted = false;
- } else {
- converted = prefs.prefHasUserValue(key_yb_bags_converted) && prefs.getBoolPref(key_yb_bags_converted);
- }
-
- if (!converted) {
- var ttBag = this._getTagsToolbarBag();
- yDebug.print("moving Favorite Tags to localstore...");
-
- if ( ttBag != null) {
- //this.storeService.clearFavoriteTags();
- for (var i=0; i < ttBag.tags.length ; i++) {
- yDebug.print("moving Favorite Tag: " + ttBag.tags[i]);
- this.addFavoriteTag(ttBag.tags[i]);
- }
- }
- yDebug.print("moving Favorite Tags to localstore: done!");
- }
-
- // clean up the preferences
- prefs.clearUserPref(key_yb_bags);
- prefs.clearUserPref(key_yb_bags_converted);
- }
- } catch (e) {
- yDebug.print("error upgrading favorite tags: " + e, YB_LOG_MESSAGE);
- }
- },
-
- getFavoriteTags: function (aTags) {
- var tags = (aTags) ? aTags : [];
- var favTags = this.storeService.getFavoriteTags(tags, {});
- /*var jsFavTags = [];
- nsFavTags.QueryInterface(Components.interfaces.nsIArray);
- var ftEnum = nsFavTags.enumerate();
- while (ftEnum.hasMoreElements()) {
- var nsString = ftEnum.getNext();
- nsString.QueryInterface(Components.interfaces.nsISupportsString);
- jsFavTags.push(nsString.data);
- }*/
- return favTags;
- },
-
- addFavoriteTag: function(tag) {
- this.storeService.addFavoriteTag(tag);
- },
-
- deleteFavoriteTag: function(tag) {
- this.storeService.deleteFavoriteTag(tag);
- },
-
- moveFavoriteTag: function(tag, index) {
- this.storeService.moveFavoriteTag(tag, index);
- },
-
-
- getBookmarksFromFavoriteTag: function(aFavTag, aOrder) {
- try {
- if (!aOrder) {
- aOrder = FAVTAGS_ORDER_DEFAULT;
- }
- var bm = this.storeService.getBookmarksFromFavoriteTag(aFavTag, {});
- this.sortBookmarks(bm, aOrder);
- return bm;
- } catch (e) {
- yDebug.print("getBookmarksForTagOrdered(" + aFavTag + "): " + e);
- return [];
- }
- },
-
- getFavoriteTagOrder: function (aTag) {
- return this.storeService.getFavoriteTagOrder(aTag);
- },
-
- setFavoriteTagOrder: function (aTag, aOrder) {
- this.storeService.setFavoriteTagOrder(aTag, aOrder);
- },
-
- isFavoriteTag: function (aTag) {
- return this.storeService.isFavoriteTag(aTag);
- },
-
- /* note that this function sorts the array in place */
- sortBookmarks: function (bookmarks, aOrder) {
- var func = null;
-
- if (aOrder == FAVTAGS_ORDER_CHRONO) {
- func = function(a, b) { return a.added_date - b.added_date; };
- } else if (aOrder == FAVTAGS_ORDER_CHRONO_REVERSE) {
- func = function(a, b) { return b.added_date - a.added_date; };
- } else if (aOrder == FAVTAGS_ORDER_ALPHANUM) {
- func = function(a, b) { return a.name.localeCompare(b.name); };
- } else if (aOrder == FAVTAGS_ORDER_ALPHANUM_REVERSE) {
- func = function(a, b) { return b.name.localeCompare(a.name); };
- } else if (aOrder == FAVTAGS_ORDER_USER) {
- func = null;
- }
-
- if (func != null) {
- bookmarks.sort(func);
- }
- },
-
-
-
- /* deprecated - only used for the conversion */
- _getTagsToolbarBag: function () {
- var prefs = Components.classes["@mozilla.org/preferences-service;1"].
- getService(Components.interfaces.nsIPrefBranch);
-
- var name = BAG_TAGSTOOLBAR;
- var bags = YBJSON.parse(prefs.getCharPref("extensions.ybookmarks@yahoo.bags"));
-
- for (var i=0; i < bags.length; i++) {
- if (bags[i].name == name) {
- if (bags[i].tags == null) {
- bags[i].tags = [];
- }
- return bags[i];
- }
- }
- return null;
-
- }
-
- };
-
- window.addEventListener("load",
- function() { ybBags.onLoad(); },
- false);
-